package client_iot_api_gateway

import (
	context "context"
	"github.com/go-courier/httptransport/client"
	"time"

	github_com_go_courier_courier "github.com/go-courier/courier"
)

type ClientIotAPIGateway interface {
	WithContext(context.Context) ClientIotAPIGateway
	Context() context.Context
	CmdCreate(req *CmdCreate, metas ...github_com_go_courier_courier.Metadata) (*CommandDefineCreateResp, github_com_go_courier_courier.Metadata, error)
	CmdDelete(req *CmdDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	CmdDetail(req *CmdDetail, metas ...github_com_go_courier_courier.Metadata) (*CommandDefineDetailsDB, github_com_go_courier_courier.Metadata, error)
	CmdParamCreate(req *CmdParamCreate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	CmdParamDelete(req *CmdParamDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	CmdParamUpdate(req *CmdParamUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	CmdSend(req *CmdSend, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	CmdUpdate(req *CmdUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	DevciceCount(req *DevciceCount, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceCountResp, github_com_go_courier_courier.Metadata, error)
	DeviceCreateV2(req *DeviceCreateV2, metas ...github_com_go_courier_courier.Metadata) (*Device, github_com_go_courier_courier.Metadata, error)
	DeviceDelete(req *DeviceDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	DeviceDetailUpdate(req *DeviceDetailUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	DeviceExtraPropertyCreate(req *DeviceExtraPropertyCreate, metas ...github_com_go_courier_courier.Metadata) (*[]DevicePropertyExtra, github_com_go_courier_courier.Metadata, error)
	DeviceExtraPropertyDelete(req *DeviceExtraPropertyDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceExtraPropertyGet(req *DeviceExtraPropertyGet, metas ...github_com_go_courier_courier.Metadata) (*DeviceExtraPropertyGetResp, github_com_go_courier_courier.Metadata, error)
	DeviceExtraPropertyPut(req *DeviceExtraPropertyPut, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceFixedPropertyCreate(req *DeviceFixedPropertyCreate, metas ...github_com_go_courier_courier.Metadata) (*[]DevicePropertyFixed, github_com_go_courier_courier.Metadata, error)
	DeviceFixedPropertyDelete(req *DeviceFixedPropertyDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceFixedPropertyGet(req *DeviceFixedPropertyGet, metas ...github_com_go_courier_courier.Metadata) (*DeviceFixedPropertyGetResp, github_com_go_courier_courier.Metadata, error)
	DeviceFixedPropertyPut(req *DeviceFixedPropertyPut, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceGroupCount(req *DeviceGroupCount, metas ...github_com_go_courier_courier.Metadata) (*OrgDeviceResp, github_com_go_courier_courier.Metadata, error)
	DeviceGroupCreate(req *DeviceGroupCreate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceGroupDelete(req *DeviceGroupDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceGroupDeleteDev(req *DeviceGroupDeleteDev, metas ...github_com_go_courier_courier.Metadata) (*BatchOpDeviceGroupResp, github_com_go_courier_courier.Metadata, error)
	DeviceGroupDetail(req *DeviceGroupDetail, metas ...github_com_go_courier_courier.Metadata) (*GetGroupDeviceResp, github_com_go_courier_courier.Metadata, error)
	DeviceGroupModify(req *DeviceGroupModify, metas ...github_com_go_courier_courier.Metadata) (*BatchOpDeviceGroupResp, github_com_go_courier_courier.Metadata, error)
	DeviceGroupUpdate(req *DeviceGroupUpdate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceHistoryData(req *DeviceHistoryData, metas ...github_com_go_courier_courier.Metadata) (*HistoryResp, github_com_go_courier_courier.Metadata, error)
	DeviceList(req *DeviceList, metas ...github_com_go_courier_courier.Metadata) (*DeviceListResp, github_com_go_courier_courier.Metadata, error)
	DeviceMaintain(req *DeviceMaintain, metas ...github_com_go_courier_courier.Metadata) (*DeviceMaintainRecordList, github_com_go_courier_courier.Metadata, error)
	DeviceMaintainCreate(req *DeviceMaintainCreate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceMnExchange(req *DeviceMnExchange, metas ...github_com_go_courier_courier.Metadata) (*ExchangeMnResp, github_com_go_courier_courier.Metadata, error)
	DeviceMove(req *DeviceMove, metas ...github_com_go_courier_courier.Metadata) (*DeviceMoveResp, github_com_go_courier_courier.Metadata, error)
	DeviceOrganization(req *DeviceOrganization, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceGroupResp, github_com_go_courier_courier.Metadata, error)
	DeviceRunState(req *DeviceRunState, metas ...github_com_go_courier_courier.Metadata) (*[]DeviceRunStateResp, github_com_go_courier_courier.Metadata, error)
	DeviceStateNotifyMsg(req *DeviceStateNotifyMsg, metas ...github_com_go_courier_courier.Metadata) (*DeviceOnlineStateResp, github_com_go_courier_courier.Metadata, error)
	DeviceStateNotifyMsgUpdate(req *DeviceStateNotifyMsgUpdate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	DeviceStatistics(req *DeviceStatistics, metas ...github_com_go_courier_courier.Metadata) (*DeviceStatisticsResp, github_com_go_courier_courier.Metadata, error)
	GetDevice(req *GetDevice, metas ...github_com_go_courier_courier.Metadata) (*DeviceQueryResp, github_com_go_courier_courier.Metadata, error)
	GetDeviceBasicInfo(req *GetDeviceBasicInfo, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceBasicInfoResp, github_com_go_courier_courier.Metadata, error)
	GetDeviceCountV3(req *GetDeviceCountV3, metas ...github_com_go_courier_courier.Metadata) (*[]GroupDeviceCountV3, github_com_go_courier_courier.Metadata, error)
	GetDeviceDetail(req *GetDeviceDetail, metas ...github_com_go_courier_courier.Metadata) (*DeviceDetailQueryResp, github_com_go_courier_courier.Metadata, error)
	GetDeviceDetailListV3(req *GetDeviceDetailListV3, metas ...github_com_go_courier_courier.Metadata) (*[]DeviceDetailV3, github_com_go_courier_courier.Metadata, error)
	GetDeviceGroup(req *GetDeviceGroup, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceGroupRespV2, github_com_go_courier_courier.Metadata, error)
	GetDeviceGroupInfo(req *GetDeviceGroupInfo, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceGroupDetailResp, github_com_go_courier_courier.Metadata, error)
	GetDeviceGroupTagsV3(req *GetDeviceGroupTagsV3, metas ...github_com_go_courier_courier.Metadata) (*[]GetDeviceGroupTagsV3Item, github_com_go_courier_courier.Metadata, error)
	GetDeviceListV3(req *GetDeviceListV3, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceListV3Resp, github_com_go_courier_courier.Metadata, error)
	GetDevicesLatestHeartbeatDataV3(req *GetDevicesLatestHeartbeatDataV3, metas ...github_com_go_courier_courier.Metadata) (*[]DeviceLatestHeartbeatDataItem, github_com_go_courier_courier.Metadata, error)
	GetGroupTags(req *GetGroupTags, metas ...github_com_go_courier_courier.Metadata) (*ClientTagGetGroupInfoTagsResp, github_com_go_courier_courier.Metadata, error)
	GetMultiGroupBelongDevices(req *GetMultiGroupBelongDevices, metas ...github_com_go_courier_courier.Metadata) (*GetGroupDeviceResp, github_com_go_courier_courier.Metadata, error)
	GetProductDetail(req *GetProductDetail, metas ...github_com_go_courier_courier.Metadata) (*DeviceDefineDetailGetResp, github_com_go_courier_courier.Metadata, error)
	GetVideoBackLiveUrl(req *GetVideoBackLiveUrl, metas ...github_com_go_courier_courier.Metadata) (*GetVidelBackLiveUrlResp, github_com_go_courier_courier.Metadata, error)
	GetVideoLiveUrl(req *GetVideoLiveUrl, metas ...github_com_go_courier_courier.Metadata) (*GetVideoLiveUrlResp, github_com_go_courier_courier.Metadata, error)
	GetVideoLiveUrlHls(req *GetVideoLiveUrlHls, metas ...github_com_go_courier_courier.Metadata) (*GetVideoLiveUrlHlsResp, github_com_go_courier_courier.Metadata, error)
	MoveDeviceInGroup(req *MoveDeviceInGroup, metas ...github_com_go_courier_courier.Metadata) (*MoveDeviceInGroupResp, github_com_go_courier_courier.Metadata, error)
	MoveDeviceOutGroup(req *MoveDeviceOutGroup, metas ...github_com_go_courier_courier.Metadata) (*MoveDeviceOutGroupResp, github_com_go_courier_courier.Metadata, error)
	OfflineDeviceList(req *OfflineDeviceList, metas ...github_com_go_courier_courier.Metadata) (*OfflineDeviceResp, github_com_go_courier_courier.Metadata, error)
	OpeLog(req *OpeLog, metas ...github_com_go_courier_courier.Metadata) (*CommandQueryResp, github_com_go_courier_courier.Metadata, error)
	Product(req *Product, metas ...github_com_go_courier_courier.Metadata) (*ProductResp, github_com_go_courier_courier.Metadata, error)
	ProductCmdList(req *ProductCmdList, metas ...github_com_go_courier_courier.Metadata) (*[]CommandDefine, github_com_go_courier_courier.Metadata, error)
	ProductCreate(req *ProductCreate, metas ...github_com_go_courier_courier.Metadata) (*DeviceDefine, github_com_go_courier_courier.Metadata, error)
	ProductDelete(req *ProductDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	ProductPropertyCreate(req *ProductPropertyCreate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	ProductPropertyDelete(req *ProductPropertyDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	ProductPropertyGet(req *ProductPropertyGet, metas ...github_com_go_courier_courier.Metadata) (*ProductPropertyGetResp, github_com_go_courier_courier.Metadata, error)
	ProductPropertyPut(req *ProductPropertyPut, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	ProductPropertySearch(req *ProductPropertySearch, metas ...github_com_go_courier_courier.Metadata) (*[]ProductDetail, github_com_go_courier_courier.Metadata, error)
	ProductUpdate(req *ProductUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	Property(req *Property, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	PropertyDelete(req *PropertyDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	PropertyUpdate(req *PropertyUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error)
	QueryDevicelocationInCache(req *QueryDevicelocationInCache, metas ...github_com_go_courier_courier.Metadata) (*QueryDeviveByLocationResp, github_com_go_courier_courier.Metadata, error)
	QueryDeviveLocationInProperty(req *QueryDeviveLocationInProperty, metas ...github_com_go_courier_courier.Metadata) (*QueryDeviveByLocationResp, github_com_go_courier_courier.Metadata, error)
	RawDataPost(req *RawDataPost, metas ...github_com_go_courier_courier.Metadata) (*RawDataGetResp, github_com_go_courier_courier.Metadata, error)
	RegisterDeviceEncryptionKey(req *RegisterDeviceEncryptionKey, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error)
	SubDeviceList(req *SubDeviceList, metas ...github_com_go_courier_courier.Metadata) (*SubDeviceListResp, github_com_go_courier_courier.Metadata, error)
	WithHost(protocol, host string, port int64) ClientIotAPIGateway
}

func NewClientIotAPIGateway(c github_com_go_courier_courier.Client) *ClientIotAPIGatewayStruct {
	return &(ClientIotAPIGatewayStruct{
		Client: c,
	})
}

type ClientIotAPIGatewayStruct struct {
	Client github_com_go_courier_courier.Client
	ctx    context.Context
}

func (c *ClientIotAPIGatewayStruct) WithContext(ctx context.Context) ClientIotAPIGateway {
	cc := new(ClientIotAPIGatewayStruct)
	cc.Client = c.Client
	cc.ctx = ctx
	return cc
}

func (c *ClientIotAPIGatewayStruct) Context() context.Context {
	if c.ctx != nil {
		return c.ctx
	}
	return context.Background()
}

func (c *ClientIotAPIGatewayStruct) CmdCreate(req *CmdCreate, metas ...github_com_go_courier_courier.Metadata) (*CommandDefineCreateResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) CmdDelete(req *CmdDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) CmdDetail(req *CmdDetail, metas ...github_com_go_courier_courier.Metadata) (*CommandDefineDetailsDB, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) CmdParamCreate(req *CmdParamCreate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) CmdParamDelete(req *CmdParamDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) CmdParamUpdate(req *CmdParamUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) CmdSend(req *CmdSend, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) CmdUpdate(req *CmdUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DevciceCount(req *DevciceCount, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceCountResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceCreateV2(req *DeviceCreateV2, metas ...github_com_go_courier_courier.Metadata) (*Device, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceDelete(req *DeviceDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceDetailUpdate(req *DeviceDetailUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceExtraPropertyCreate(req *DeviceExtraPropertyCreate, metas ...github_com_go_courier_courier.Metadata) (*[]DevicePropertyExtra, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceExtraPropertyDelete(req *DeviceExtraPropertyDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceExtraPropertyGet(req *DeviceExtraPropertyGet, metas ...github_com_go_courier_courier.Metadata) (*DeviceExtraPropertyGetResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceExtraPropertyPut(req *DeviceExtraPropertyPut, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceFixedPropertyCreate(req *DeviceFixedPropertyCreate, metas ...github_com_go_courier_courier.Metadata) (*[]DevicePropertyFixed, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceFixedPropertyDelete(req *DeviceFixedPropertyDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceFixedPropertyGet(req *DeviceFixedPropertyGet, metas ...github_com_go_courier_courier.Metadata) (*DeviceFixedPropertyGetResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceFixedPropertyPut(req *DeviceFixedPropertyPut, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceGroupCount(req *DeviceGroupCount, metas ...github_com_go_courier_courier.Metadata) (*OrgDeviceResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceGroupCreate(req *DeviceGroupCreate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceGroupDelete(req *DeviceGroupDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceGroupDeleteDev(req *DeviceGroupDeleteDev, metas ...github_com_go_courier_courier.Metadata) (*BatchOpDeviceGroupResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceGroupDetail(req *DeviceGroupDetail, metas ...github_com_go_courier_courier.Metadata) (*GetGroupDeviceResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceGroupModify(req *DeviceGroupModify, metas ...github_com_go_courier_courier.Metadata) (*BatchOpDeviceGroupResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceGroupUpdate(req *DeviceGroupUpdate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceHistoryData(req *DeviceHistoryData, metas ...github_com_go_courier_courier.Metadata) (*HistoryResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceList(req *DeviceList, metas ...github_com_go_courier_courier.Metadata) (*DeviceListResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceMaintain(req *DeviceMaintain, metas ...github_com_go_courier_courier.Metadata) (*DeviceMaintainRecordList, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceMaintainCreate(req *DeviceMaintainCreate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceMnExchange(req *DeviceMnExchange, metas ...github_com_go_courier_courier.Metadata) (*ExchangeMnResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceMove(req *DeviceMove, metas ...github_com_go_courier_courier.Metadata) (*DeviceMoveResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceOrganization(req *DeviceOrganization, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceGroupResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceRunState(req *DeviceRunState, metas ...github_com_go_courier_courier.Metadata) (*[]DeviceRunStateResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceStateNotifyMsg(req *DeviceStateNotifyMsg, metas ...github_com_go_courier_courier.Metadata) (*DeviceOnlineStateResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceStateNotifyMsgUpdate(req *DeviceStateNotifyMsgUpdate, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) DeviceStatistics(req *DeviceStatistics, metas ...github_com_go_courier_courier.Metadata) (*DeviceStatisticsResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDevice(req *GetDevice, metas ...github_com_go_courier_courier.Metadata) (*DeviceQueryResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceBasicInfo(req *GetDeviceBasicInfo, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceBasicInfoResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceCountV3(req *GetDeviceCountV3, metas ...github_com_go_courier_courier.Metadata) (*[]GroupDeviceCountV3, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceDetail(req *GetDeviceDetail, metas ...github_com_go_courier_courier.Metadata) (*DeviceDetailQueryResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceDetailListV3(req *GetDeviceDetailListV3, metas ...github_com_go_courier_courier.Metadata) (*[]DeviceDetailV3, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceGroup(req *GetDeviceGroup, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceGroupRespV2, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceGroupInfo(req *GetDeviceGroupInfo, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceGroupDetailResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceGroupTagsV3(req *GetDeviceGroupTagsV3, metas ...github_com_go_courier_courier.Metadata) (*[]GetDeviceGroupTagsV3Item, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDeviceListV3(req *GetDeviceListV3, metas ...github_com_go_courier_courier.Metadata) (*GetDeviceListV3Resp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetDevicesLatestHeartbeatDataV3(req *GetDevicesLatestHeartbeatDataV3, metas ...github_com_go_courier_courier.Metadata) (*[]DeviceLatestHeartbeatDataItem, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetGroupTags(req *GetGroupTags, metas ...github_com_go_courier_courier.Metadata) (*ClientTagGetGroupInfoTagsResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetMultiGroupBelongDevices(req *GetMultiGroupBelongDevices, metas ...github_com_go_courier_courier.Metadata) (*GetGroupDeviceResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetProductDetail(req *GetProductDetail, metas ...github_com_go_courier_courier.Metadata) (*DeviceDefineDetailGetResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetVideoBackLiveUrl(req *GetVideoBackLiveUrl, metas ...github_com_go_courier_courier.Metadata) (*GetVidelBackLiveUrlResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetVideoLiveUrl(req *GetVideoLiveUrl, metas ...github_com_go_courier_courier.Metadata) (*GetVideoLiveUrlResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) GetVideoLiveUrlHls(req *GetVideoLiveUrlHls, metas ...github_com_go_courier_courier.Metadata) (*GetVideoLiveUrlHlsResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) MoveDeviceInGroup(req *MoveDeviceInGroup, metas ...github_com_go_courier_courier.Metadata) (*MoveDeviceInGroupResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) MoveDeviceOutGroup(req *MoveDeviceOutGroup, metas ...github_com_go_courier_courier.Metadata) (*MoveDeviceOutGroupResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) OfflineDeviceList(req *OfflineDeviceList, metas ...github_com_go_courier_courier.Metadata) (*OfflineDeviceResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) OpeLog(req *OpeLog, metas ...github_com_go_courier_courier.Metadata) (*CommandQueryResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) Product(req *Product, metas ...github_com_go_courier_courier.Metadata) (*ProductResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductCmdList(req *ProductCmdList, metas ...github_com_go_courier_courier.Metadata) (*[]CommandDefine, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductCreate(req *ProductCreate, metas ...github_com_go_courier_courier.Metadata) (*DeviceDefine, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductDelete(req *ProductDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductPropertyCreate(req *ProductPropertyCreate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductPropertyDelete(req *ProductPropertyDelete, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductPropertyGet(req *ProductPropertyGet, metas ...github_com_go_courier_courier.Metadata) (*ProductPropertyGetResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductPropertyPut(req *ProductPropertyPut, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductPropertySearch(req *ProductPropertySearch, metas ...github_com_go_courier_courier.Metadata) (*[]ProductDetail, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) ProductUpdate(req *ProductUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) Property(req *Property, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) PropertyDelete(req *PropertyDelete, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) PropertyUpdate(req *PropertyUpdate, metas ...github_com_go_courier_courier.Metadata) (*string, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) QueryDevicelocationInCache(req *QueryDevicelocationInCache, metas ...github_com_go_courier_courier.Metadata) (*QueryDeviveByLocationResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) QueryDeviveLocationInProperty(req *QueryDeviveLocationInProperty, metas ...github_com_go_courier_courier.Metadata) (*QueryDeviveByLocationResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) RawDataPost(req *RawDataPost, metas ...github_com_go_courier_courier.Metadata) (*RawDataGetResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) RegisterDeviceEncryptionKey(req *RegisterDeviceEncryptionKey, metas ...github_com_go_courier_courier.Metadata) (github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

func (c *ClientIotAPIGatewayStruct) SubDeviceList(req *SubDeviceList, metas ...github_com_go_courier_courier.Metadata) (*SubDeviceListResp, github_com_go_courier_courier.Metadata, error) {
	return req.InvokeContext(c.Context(), c.Client, metas...)
}

// 依赖注入
func (c *ClientIotAPIGatewayStruct) WithHost(protocol, host string, port int64) ClientIotAPIGateway {
	httpClient := client.Client{
		Protocol: protocol,
		Host:     host,
		Port:     uint16(port),
		Timeout:  10 * time.Second,
	}
	httpClient.SetDefaults()

	cc := new(ClientIotAPIGatewayStruct)
	cc.Client = &httpClient
	return cc
}
